<?php
include("Jugador.php");
include("Mensajes.php");
include("ControllerJuego.php");
// prevent the server from timing out
set_time_limit(0);

// include the web sockets server script (the server is started at the far bottom of this file)
require 'class.PHPWebSocket.php';

// when a client sends data to the server
function wsOnMessage($clientID, $message, $messageLength, $binary) {
    
	global $Server;
        global $lista_jugadores;
        global $numJugador;
        
	$Server->log("RECIBI:".$message);
        
        if($lista_jugadores==null){$lista_jugadores=array();}
	if($numJugador==null){$numJugador=1;}
        
	//$ip = long2ip( $Server->wsClients[$clientID][6] );
	
	// check if message length is 0
	if ($messageLength == 0) {
		$Server->wsClose($clientID);
		return;
	}
        
	list($codigo,$nombre) = explode(";", $message);
	
        switch($codigo){
            
            case Mensajes::MOSTRARFICHA:
                    mostrarFicha($message);
                break;

            case Mensajes::MOSTRARDISPARADOR:
                    mostrarDisparador($message);
                break;
        
            case Mensajes::ACTUALIZARPOSICIONDISPARADOR:
                    actualizarPosicionDisparador($message);
                break;
        
            case Mensajes::ACTUALIZARPOSICIONFICHA:
                    actualizarPosicionFicha($message);
                break;
            
            case Mensajes::RECIBIRDISPARO:
                    recibirDisparo($message);
                break;
            
            case Mensajes::RECIBIRCOLOCADA:
                    recibirColocada($message);
                break;
            
            case Mensajes::ENVIARNOMBRE:
                    enviarNombre($nombre,$clientID);
                break;
            case Mensajes::SINCROPOSFICHA:
                    sincroPosFicha($message);
                break;
            
            case Mensajes::FICHAQUIETA:
                    siguienteTurno();
                break;
            
            
        }//switch
}

// when a client connects
function wsOnOpen($clientID)
{
	global $Server;
	$ip = long2ip( $Server->wsClients[$clientID][6] );

	$Server->log( "$ip ($clientID) se ha conectado" );

	//Send a join notice to everyone but the person who joined
	foreach ( $Server->wsClients as $id => $client )
		if ( $id != $clientID )
			$Server->wsSend($id, "Visitante $clientID ($ip) a entrado a la sala");
}

// when a client closes or lost connection
function wsOnClose($clientID, $status) {
	global $Server;
	$ip = long2ip( $Server->wsClients[$clientID][6] );

	$Server->log( "$ip ($clientID) se ha desconectado" );

	//Send a user left notice to everyone in the room
	foreach ( $Server->wsClients as $id => $client )
		$Server->wsSend($id, "Visitante $clientID ($ip) ha dejado la sala.");
}

// start the server
$Server = new PHPWebSocket();
$Server->bind('message', 'wsOnMessage');
$Server->bind('open', 'wsOnOpen');
$Server->bind('close', 'wsOnClose');
// for other computers to connect, you will probably need to change this to your LAN IP or external IP,
// alternatively use: gethostbyaddr(gethostbyname($_SERVER['SERVER_NAME']))
$Server->wsStartServer('192.168.1.34', 9300);

$numJugador=1;
$max_jugadores=5;
$lista_jugadores=array();

?>